package IO流_转换流.字符输入转换流;

//

import java.io.*;

public class Test {
    public static void main(String[] args) {
        // InputStreamReader: 字符输入转换流
        // 作用: 解决不同编码时, 字符流读取文本内容乱码的问题
        // 解决思路: 先获取文件的原始字节流, 再将其按真实的字符集编码转成字符输入流, 这样字符输入流中的字符就不乱码了.

        // 构造器
        // 1. public InputStreamReader(InputStream is): 把原始的字节输入流, 按照代码默认编码转成字符输入流(与直接用FileReader的效果一样) (不常用)
        // 2. public InputStreamReader(InputStream is, String charset): 把原始字节输入流,按照指定字符集编码转成字符输入流(重点)

        try (
                // 1. 得到文件的原始字节流 (GBK的字节流形式)
                InputStream is = new FileInputStream("Senior\\src\\IO流_转换流\\引出问题_不同编码读取是会乱码\\gbk");
                // 2. 把原始的字节输入流按照指定的字符集编码转成字符输入流
                Reader isr = new InputStreamReader(is, "GBK");
                // 3. 把字符输入流包装成缓冲字符输入流
                BufferedReader br1 = new BufferedReader(isr);

        ){
            String line;
            while ((line = br1.readLine()) != null) {
                System.out.println(line);
            } // 不会乱码

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

